perm filename FILLS.F4[TMP,LCS] blob
sn#132737 filedate 1974-11-27 generic text, type C, neo UTF8
COMMENT ā VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 C***** FILLER, HGHT, MISS, HALF ********
C00006 ENDMK
Cā;
C***** FILLER, HGHT, MISS, HALF ********
C Q AND R ARE X,Y COORDS. NE(1)=WDCNT. OTHER NE'S HAVE 3
C FOR INVIS. VECTORS. M=VERTICAL SCAN LINES
SUBROUTINE FILLER(Q,R,NE,M,LP,IT,LD,LS)
DIMENSION Q(1),R(1),NE(1)
KK=NE(1)
NX=-10000
JN=NX
KJ=2
DO 4 K=2,KK
IF(NE(K).NE.3)GO TO 11
NE(K)=KJ
KJ=K+1
GO TO 4
11 NE(K)=0
4 CONTINUE
DO 12 K=1,KK
Q(K)=IFIX(Q(K))
12 R(K)=IFIX(R(K))
NE(KK+1)=KJ
DO 2 J=2,KK
IF(NE(J).GT.0.OR.Q(J).EQ.Q(J-1))GO TO 2
XMID=HALF(Q,J)+.00001
ALT=HALF(R,J)
KJ=0
100 DO 3 L=2,KK
IF(L.EQ.J.OR.NE(L).GT.0)GO TO 3
IF(MISS(L,XMID,Q))GO TO 3
40 Y=HGHT(L,XMID,Q,R)
IF(Y.LT.ALT)KJ=KJ+1
3 CONTINUE
IF(MOD(KJ,2).EQ.0)GO TO 2
NE(J)=-1
KJ=M
N=Q(J)
L=Q(J-1)
ALT=.0001
IF(N.GT.L)GO TO 33
KJ=-KJ
ALT=-ALT
33 IF(L.EQ.NX.AND.JN.EQ.J-1)GO TO 17
JA=3
X=-1
17 NX=N
JN=J
DO 6 K=L,N,KJ
RK=K
XK=RK
IF(K.EQ.N)ALT=-ALT
RK=RK+ALT
Y=HGHT(J,RK,Q,R)
IF(X)CALL LINES(XK,Y,JA,LP,IT,LS,LD)
JA=2
H=-10000
18 DO 7 I=2,KK
IF(NE(I).NE.0)GO TO 7
IF(MISS(I,RK,Q))GO TO 7
9 B=HGHT(I,RK,Q,R)
IF(B.GT.Y)GO TO 7
IF(B.LE.H)GO TO 7
H=B
IX=I
7 CONTINUE
IF(H.EQ.Y)GO TO 31
IF(H.NE.-10000)GO TO 31
NX=-10000
X=-1
GO TO 6
31 IF(IX.NE.JX.AND.X.GT.0)JA=3
JX=IX
CALL LINES(XK,H,JA,LP,IT,LS,LD)
JA=2
IF(X.GT.0)CALL LINES(XK,Y,JA,LP,IT,LS,LD)
X=-X
6 CONTINUE
2 CONTINUE
END
FUNCTION HGHT(J,A,Q,R)
DIMENSION Q(1),R(1)
B=R(J-1)
D=Q(J-1)
F=Q(J)
HGHT=((R(J)-B)*(A-D))/(F-D)+B
IF(F.EQ.D)HGHT=B
END
FUNCTION MISS(J,A,Q)
DIMENSION Q(1)
B=Q(J)
C=Q(J-1)
MISS=-1
IF((A.LT.C.AND.A.GT.B).OR.(A.LT.B.AND.A.GT.C))MISS=0
END
FUNCTION HALF(A,J)
DIMENSION A(1)
HALF=(A(J-1)-A(J))/2.+A(J)
END
SUBROUTINE LINES(A,B,J,I,IT,L,LD)
M=A
N=B
IF(IT.LT.11)GO TO 41
M=B
N=A
IF(L.AND.N.NE.LY)J=3
11 IF(.NOT.I)GO TO 2
IF(J.EQ.3)GO TO 1
CALL AVECT(M,N)
RETURN
1 CALL AIVECT(M,N)
RETURN
41 IF(L.AND.M.NE.LX)J=3
GO TO 11
2 IF(J.EQ.3.OR..NOT.LD)GO TO 42
NI=2
IF(IT.GT.10)GO TO 44
MI=IT*1.3
IF(LY.LT.N)GO TO 46
MI=-MI
NI=-NI
46 MD=MI
IF(J.EQ.4)J=2
IF(J.EQ.2)MD=NI
LY=LY+MD
IF(MI.AND.LY.LT.N)GO TO 42
IF(.NOT.MI.AND.LY.GT.N)GO TO 42
47 CALL PLOT(LX,LY,J)
J=J+1
IF(IT.GT.10)GO TO 43
GO TO 46
44 MI=(IT-10)*1.3
IF(LX.LT.M)GO TO 43
MI=-MI
NI=-NI
43 MD=MI
IF(J.EQ.4)J=2
IF(J.EQ.2)MD=NI
LX=LX+MD
IF(MI.AND.LX.LT.M)GO TO 42
IF(.NOT.MI.AND.LX.GT.M)GO TO 42
GO TO 47
42 CALL PLOT(M,N,J)
LX=M
LY=N
END